Existing virtual machine (VM) data stores use symmetric clustered file systems in virtualized environments to host VM disks and data. In a typical setup, a VM data store is provided in such a way that it is accessible to one or many host devices. A single VM data store may allow access by many different VMs which are run or executed on the connected host devices.
The VM data stores organize physical space as a collection of file blocks and larger file block resources known as clusters. Access to file block clusters is limited to one host device at a time and coordinated by on-disk locks coupled with a periodic heartbeat mechanism. However, as a result of the data store being shared between multiple host devices and/or VMs, contention for the resources of clusters often results in increased access and/or allocation times for files in the data store. For instance, when resource allocations are occurring simultaneously from the same or different host devices for different files, the file system (e.g., a virtual machine file system (VMFS), etc.) and/or VM data store must ensure that there is no contention for resource clusters from which the resources will be allocated.
Further, resource allocations are sometimes provided to host devices in unique physical positions in the data store based on an identifier of the host, ensuring that resources allocated to a host are located near each other in the data store. In an example, a hash function may be applied to a unique identifier (such as a universal unique identifier (UUID)) of a host and the result of the hash function may be used as a starting location in the physical memory of the data store to begin locating free resource clusters and allocating resources to the host. However, in some cases, hosts may access, alter, or take control of files that were previously allocated to and/or created by other hosts (e.g., a VM may be migrated from a first host to a second host). During and after such an event, the file data pertaining to affected files and/or file data become fragmented, with parts of the data being stored in a memory region associated with one host while other parts of the data are stored in a different memory region associated with another host. Because the resource allocations of the affected file data are spread across several locations in memory, the occurrence of resource contention for the associated resource clusters increases substantially.
In FIGS. 1 to 9, the systems are illustrated as schematic drawings. The drawings may not be to scale.